import axios from "axios";
import JSONBig from "json-bigint";
import message from "@/utils/message";

let baseURL = import.meta.env.VITE_BASE_URL;
let searchParams = new URLSearchParams(window.location.search)  //浏览器 URL 中 “?” 后面的查询参数
let contextPath = searchParams.get('contextPath')  //获取上下文路径（路径前缀）
if(contextPath){
    baseURL = baseURL + contextPath  //拼接路径
}

const request = axios.create({
    baseURL: baseURL,
    headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
        'lang': 'zh-CN'
    },
    transformResponse: [
        function (data) {
            try {
                return JSONBig.parse(data)
            } catch (error) {
                return data
            }
        }
    ]
});

//config 是请求配置对象（url、headers、请求参数data 等）
request.interceptors.request.use((config)=>{
    return config;  //返回处理后的config，axios再用这个配置发送请求
});

request.interceptors.response.use(
    (response)=>{
        //请求成功
        if(response.status === 200){
            const data = response.data;
            if(data.code === '200'){
                //naive-ui 会自动将 $message 挂载到 window 对象
                message.success('请求成功');
                return data;
            } else {
                let doMessage = data.message;
                console.log('请求成功,业务error：',doMessage);
                return data  //请求虽成功，但业务逻辑失败
            }
        }
    },
    (error)=>{
        if(error.response?.status === 500){
            console.log('服务器内部异常');
        }else {
            console.log('请求错误');
        }
        return Promise.reject(error);
    }
);

export {
    request
}